package com.tedu.api.thread;

/**
 * 线程生命周期--线程执行流程【线程模型】
 * 1.新建状态【New】  线程创建出来，线程出生
 * SimpleThread st=new SimpleThread();
 * 2.就绪状态【Runnable】线程调用start()方法，线程进入就绪状态，等待被调度
 * st.start();
 * 3.运行状态【Running】
 * 线程获取CPU时间片，run()开始
 * 4.阻塞状态【Blocked】线程停止状态--线程睡眠
 *   调用Thread.sleep()
 * 5.终止状态【Dead】正常(线程死亡)、异常
 *  run()中最后
 *
 * 案例：创建线程子类：SimpleThread----Thread线程类，线程执行流程
 */
public class ThreadStateDemo {
    public static void main(String[] args) {
        System.out.println("主线程处于新建状态");//0~开始

        SimpleThread st=new SimpleThread();//1.新建状态：线程出生
        System.out.println(st.getName()+"现在处于新建状态：出生");

        st.start();//2.就绪状态
        System.out.println(st.getName()+"调用start后进入就绪状态~");
    }
}
//创建线程子类：SimpleThread
class SimpleThread extends Thread{
    public void run() {//3.运行状态
        System.out.println(Thread.currentThread().getName()+"处于运行状态");
        try {
            Thread.sleep(1000);//4.阻塞状态
        } catch (InterruptedException e) {
            System.out.println(Thread.currentThread().getName()+"被中断");
        }
        //5.线程死亡
        System.out.println(Thread.currentThread().getName()+"处于终止状态！");
    }
}
